package com.adk.backend.service;

import com.adk.backend.entity.LxInventoryList;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * 库存列表服务接口
 */
public interface InventoryListService {
    
    /**
     * 查询库存列表
     */
    List<Map<String, Object>> getInventoryList(Map<String, Object> params);
    
    /**
     * 根据ID查询库存详情
     */
    Map<String, Object> getInventoryDetailById(Long id);
    
    /**
     * 保存库存（新增或更新）
     */
    boolean saveInventory(LxInventoryList inventory);
    
    /**
     * 保存库存（从引用代码转换）
     */
    boolean saveInventoryFromRefs(Map<String, Object> data);
    
    /**
     * 删除库存
     */
    boolean deleteInventory(Long id);
    
    /**
     * 导入Excel文件（批量添加库存）
     */
    Map<String, Object> importInventoryFromExcel(org.springframework.web.multipart.MultipartFile file, Integer userId);
    
    /**
     * 导出库存列表（Excel）
     */
    void exportInventoryList(HttpServletResponse response, Map<String, Object> params, boolean includeWarehouse, boolean includeBatchCode);
    
    /**
     * 获取调拨库存列表（根据源仓库）
     */
    List<Map<String, Object>> getTransferInventoryList(Long fromWhId);
    
    /**
     * 创建调拨单
     */
    Map<String, Object> createTransfer(Long fromWhId, Long toWhId, List<Map<String, Object>> transferItems, Integer userId);
    
    /**
     * 确认收货（执行调拨）
     */
    boolean confirmTransfer(Long transferId, Integer userId);
    
    /**
     * 获取调拨单列表
     */
    List<Map<String, Object>> getTransferList(Map<String, Object> params);
    
    /**
     * 获取调拨单详情
     */
    Map<String, Object> getTransferDetail(Long transferId);
    
    /**
     * 获取库存汇总（按装车单、按订单等）
     */
    List<Map<String, Object>> getInventorySummary(Map<String, Object> params);
    
    /**
     * 获取过期库存列表
     */
    List<Map<String, Object>> getOverdueInventory(Map<String, Object> params);
}

